1. Field of the Invention
The present invention relates to the field of Programmable Logic Arrays (PLAs), Field Programmable Gate Arrays (FPGAs) and Programmable Logic Devices (PLDs). More particularly, the present invention relates to a programmable logic array architecture in which individual logic elements are based on a bit sliceable arithmetic logic unit (ALU), each bit slice being individually programmable to perform low-level Boolean and gate-level operations, as well as higher-level logic and arithmetic functions.
2. Description of the Related Art
FIG. 1 illustrates a programmable logic element 100 used in a conventional programmable logic device. Typically, a logic device includes a two-dimensional array of elements such as element 100 disclosed in U.S. Pat. No. 5,274,581.
As shown, element 100 implements a four-input look-up table 102 which is programmable to produce a desired binary output signal value for each of the sixteen possible combinations of its four binary input signals A, B, C and D. When element 100 is to be used as one stage of a two-input adder or subtracter, a four-input look-up table is much more than is needed to provide just a sum out or carry value. Accordingly, the four-input look-up table is provided as shown in FIG. 1 as two three-input look-up tables 104, 106 so that the one element 100 can provide both a sum out on its normal output, and important precedents to the carry out value on outputs X and Y.
Element 100 also provides further inputs and outputs that enable its use as one place in a binary operation such as addition, subtraction or counting. Specifically, element 100 includes a carry in input, typically from the carry out output of another adjacent logic element. Element 100 further includes a cascade connect input, also typically from another adjacent logic element, which can allow the cascade connect output from the adjacent logic element to be combined with the output of the look-up table in element 100 if desired. In addition to its regular data output from driver 108, element 100 includes a cascade connect output, which typically is applied to the cascade connect input of an adjacent logic element. A carry out signal is similarly applied to the carry in input of another, typically adjacent logic element.
FIG. 2 illustrates how the four-input look-up table 102 of element 100 is realized as two three-input look-up tables 104, 106 using standard logic symbols.
The prior art programmable element, and programmable arrays based thereon, are subject to many drawbacks. For example, when attempting to program structures for performing higher-level functions (such as arithmetic and complex logic operations), many logic elements are required to be combined together, which leads to larger structures and reduced performance, including slow carry propagation. However, this is necessary to maintain the ability to perform lower-level functions. Further, to allow logic elements to be combined together to perform expanded logic operations, combinational logic must be included in each element, even when such operations are not programmed, thus leading to wasteful circuitry. Moreover, the prior art structures can only be statically programmed to perform different levels of functionality.
What is needed in the art, therefore, is a multi-scale programmable logic device that can be dynamically configured to select different scales of functionality. The present invention fulfills this need, among others.